Auto merge of #2974 - alexcrichton:etag, r=brson
authorbors <bors@rust-lang.org>
Tue, 9 Aug 2016 02:10:55 +0000 (19:10 -0700)
committerGitHub <noreply@github.com>
Tue, 9 Aug 2016 02:10:55 +0000 (19:10 -0700)
commite95828103a1d8be1161adf394434b18e2e708954
tree935e008545f4b97a1476be195ed60647c6d9e6cb
parent6056c7db2bf48b1cf16af1e91d6fe2578e7a3b51
parenta9d108a8790b7219eb36cbad479a98e500b55b4e
Auto merge of #2974 - alexcrichton:etag, r=brson

Speed up noop registry updates with GitHub

This commit adds supports to registry index updates to use GitHub's HTTP API [1]
which is purportedly [2] much faster than doing a git clone, and emprically that
appears to be the case.

This logic kicks in by looking at the URL of a registry's index, and if it looks
exactly like `github.com/$user/$repo` then we'll attempt to use GitHub's API,
otherwise we always fall back to a git update.

This behavior may *slow down* registry updates which actually need to download
information as an extra HTTP request is performed to figure out that we need to
perform a git fetch, but hopefully that won't actually be the case much of the
time!

[1]: https://developer.github.com/v3/repos/commits/#get-the-sha-1-of-a-commit-reference
[2]: https://developer.github.com/changes/2016-02-24-commit-reference-sha-api/

Closes https://github.com/rust-lang/cargo/issues/2451